package cn.edu.cqupt.cxcy.dao;

import java.util.Date;
import java.util.List;

import cn.edu.cqupt.cxcy.model.Fieldtype;
import cn.edu.cqupt.cxcy.model.GuiDirection;
import cn.edu.cqupt.cxcy.model.Investor;
import cn.edu.cqupt.cxcy.model.LoginFlag;
import cn.edu.cqupt.cxcy.model.Notice;
import cn.edu.cqupt.cxcy.model.Noticetype;
import cn.edu.cqupt.cxcy.model.ProjecType;
import cn.edu.cqupt.cxcy.model.Team;
import cn.edu.cqupt.cxcy.model.Tutor;

/**
 * 管理员
 * @author Dancer-mno
 * @date 2015年10月19日
 */
public interface AdminDao {

	public static final int CDYY_PAGING = 5;
	public static final int NEWS_PAGING = 10;
	public static final int TEAC_PAGING = 5;
	public static final int TEAM_PAGING = 5;
	public static final int INVE_PAGING = 5;
	public static final int PROS_PAGING = 9;
	
	/**
	 * 1:true;0:false;是否是登陆状态true:正被登陆中;false:没有使用
	 * @param name
	 * @return
	 */
	public boolean SessionSelect(String name);
	
	public void SessionUpdata(String name, boolean trueorfalse);
	
	public boolean updateSysFlag( LoginFlag loginFlag);
	/**
	 * 添加导师，密码默认为123456
	 * @param teac
	 */
	public boolean addTeac(Tutor teac);
	
	/**
	 * 
	 * @param team 团队的info
	 * @return success:true
	 */
	public boolean addTeam(Team team);
	/**
	 * 添加投资人，密码默认为123456
	 * @param inve
	 */
	public void addInve(Investor inve);
	
	/**
	 * 在管理员页面展现 场地预约的列表
	 * @param count 每页多少数据
	 * @param page 第几页
	 * @param type 场地类别
	 * @param status 审核状态
	 * @return
	 */
	public List<Object> cDList( int count, int page, int type,  int status);
	
	/**
	 * 场地预约的总条数
	 * @param id
	 * @return
	 */
	public int countCd(String type,  int status);
	
	/**
	 * 审核场地预约，通过修改为2, 不同意修改为1;
	 * @param id 场地id
	 */
	public void updateCd(int id, int rs, String remarks);
	
	/**
	 * 添加新闻
	 * @param notice 实体类
	 */
	public void addNews(Notice notice);
	
	/**
	 * 删除新闻
	 * @param id 新闻id
	 */
	public boolean delNews(int id);
	
	/**
	 * 查看是否有新闻
	 * @param id 新闻id
	 * @return 存在就返回true 不存在反之
	 */
	public boolean isHaveNews(int id);
	
	/**
	 * 根据邮箱得到 check值 找回密码用
	 * @param mail
	 * @return
	 */
	public String getStatus(String mail);
	
	/**
	 * 根据邮箱修改密码
	 * @param mail
	 */
	public boolean updatePass(String mail, String passw);
	
	/**
	 * 导师的列表
	 * @param type 0:默认全部;1:指导团队;2:未指导
	 * @param page 当前页
	 * @param count 每页多少数据
	 */
	public List<Object> tutorList(int type, int page, int count);
	
	/**
	 * 导师的总条数
	 * @param type 0:默认全部;1:指导团队;2:未指导
	 * @return
	 */
	public int countTutor(int type);
	/**
	 * 投资人列表
	 * @param star
	 * @param count
	 * @return
	 */
	public List<Object> investorList(int star, int count);
	
	/**
	 * 投资人的总条数
	 * @return
	 */
	public int countInve();
	
	/**
	 * 公告列表
	 * @param star
	 * @param count
	 * @param type 公告类型
	 * @return
	 */
	public List<Object> noticeList(int star, int count, int type);
	
	/**
	 * 新闻的总条数
	 * @param type 类别
	 * @return
	 */
	public int countNotice(int type);
	
	/**
	 * 团队 列表
	 * @param star 
	 * @param count
	 * @param type 1:有导师;2:没有
	 * @return
	 */
	public List<Object> teamList(int star, int count, int type);
	
	/**
	 * 团队的总条数
	 * @param type 1:有导师;2:没有
	 * @return
	 */
	public int countTeam(int type);
	
	/**
	 * 查看投资人信息
	 * @param loname 登陆邮箱
	 * @return
	 */
	public Investor invenfo(String loname);
	
	/**
	 * 查看投资人信息
	 * @param id 投资人id
	 * @return
	 */
	public Investor invenfo(int id);
	
	/**
	 * 投资人投资的项目
	 * @param id
	 * @return
	 */
	public List<Object> invePro(int id);
	
	/**
	 * 删除投资人
	 * @param id
	 * @return
	 */
	public boolean delInve(int id);
	
	/**
	 * 团队信息
	 * @param loname 登陆邮箱
	 * @return
	 */
	public Team teamInfo(String loname);
	
	/**
	 * 团队信息
	 * @param id 团队id
	 * @return
	 */
	public Team teamInfo(int id);
	
	/**
	 * 返回团队的队员名单
	 * @param tid
	 * @return
	 */
	public List<Object> memberInfo(int tid);
	/**
	 * 删除团队
	 * @param id 团队id
	 * @return
	 */
	public boolean delTeam(int id);
	
	/**
	 * 导师信息
	 * @param loname  登陆邮箱
	 * @return
	 */
	public Tutor tutorInfo(String loname);
	
	/**
	 * 导师管理的团队
	 * @param id
	 * @return
	 */
	public List<Object> tutorTeam(int id);
	/**
	 * 导师信息
	 * @param id 导师id
	 * @return
	 */
	public List<Object> tutorInfo(int id);
	
	/**
	 * 删除导师
	 * @param id
	 * @return
	 */
	public boolean delTutor(int id);
	
	/**
	 * 未审核的场地预约
	 * @return
	 */
	public int pointCdyy();
	
	/**
	 * 未审核的项目
	 * @return
	 */
	public int pointPro();
	
	/**
	 * 项目的分页
	 * @param status  审核状态
	 * @param page 当前页
	 * @param count 每页多少条
	 * @return
	 */
	public List<Object> proList(int status, int page, int count);
	
	/**
	 * 项目的总条数
	 * @param status 项目状态
	 */
	public int countPro(int status);
	
	/**
	 * 公告的类型 列表
	 */
	public List<Noticetype> noticeType();
	
	/**
	 * 场地预约的类型列表
	 * @return
	 */
	public List<Fieldtype> fieldType();
	
	/**
	 * 查看日历
	 * @param s 日期
	 * @param ft_id 类型
	 * @return
	 */
	public List<Object> caleList(Date s, int ft_id);
	
	/**
	 * 导师的辅导类型
	 * @return
	 */
	public List<GuiDirection> guiDirection();
	
	/**
	 * 项目类别
	 * @return
	 */
	public List<ProjecType> projecType();
	
	/**
	 * 项目的详细情况
	 * @param id
	 * @return
	 */
	public List<Object> proInfo(int id);
	
	public Boolean delPro(int id);
	
	public List<Object> newsInfo(int id);
	
	public boolean examPro(int pid, int id, String opin);
	
	
	/**
	 * 查看是否有标签
	 * @return true为存在标签
	 */
	public Boolean isHaveLable_Pros(String lable);
	public Boolean isHaveLable_News(String lable);
	public Boolean isHaveLable_Teac(String lable);
	public Boolean isHaveLable_Cdyy(String lable);
	/**
	 * 添加标签
	 */
	public Boolean addLable_Pros(String lable);
	public Boolean addLable_News(String lable);
	public Boolean addLable_Teac(String lable);
	public Boolean addLable_Cdyy(String lable);
	
	/**
	 * 转义html为字符串
	 */
	public List<Object> noticeListEscapeHtml(int star, int count, int type);
	
	public void updateNew(Notice notice);
	/**
	 * 管理员添加公司账户
	 */
	public int addTeaminfo(Team team);
	
}
